Static or video images captured under low-light conditions and other circumstances are often noisy and blurry due to their camera sensor limitations and the hand-held nature of the camera. Various computer-implemented techniques are used to improve the appearance of such images. For example, algorithms used within image editing software can be used to change the color, brightness, etc. of the pixels of an image. Image editors use algorithms to add or remove noise from an image, remove unwanted elements, selectively change colors, change image orientation, distort or transform the shape of an image, correct images for lens distortions, make the image lighter or darker, change contrast, apply filters, merge images, change color depth, change contrast and brightness, etc.
Image editors can sharpen images in a number of ways. Image sharpening can involve reducing uniform blur or motion blur, increasing local contrast, and/or boosting image details. Uniform blur is typically Gaussian or lens blurs which is represented as 2D symmetric point spread functions (PSF). Motion blurs are typically caused by either camera shake and/or independent moving objects (e.g. people) which is represented by a 2D non-symmetric, sparse PSF.
One existing image sharpening technique is known as unsharp masking. The unsharp masking technique is used by many image processing software applications. Unsharp masking involves blurring an input image, computing a high-frequency image by subtracting the blurred image from the original image, and combining the high-frequency image linearly based on a weight (i.e., a sharpen strength) with the original image. These operations are performed globally on the image as a whole and generally improve contrast in the image. However, halo artifacts and ringing can occur as a result of the unsharp masking techniques. Another existing image sharpening technique is known as smart sharpen. Smart sharpen is an iterative extension of unsharp masking that involves feeding the result of each sharpen iteration to the input of the next iteration. This can make the sharpen result more accurate. However, it can exacerbate halo and ringing artifact and increase noise in the image. Unsharp masking and smart sharpen are applied globally and have no noise suppression capability. These techniques often bring up compression artifacts and noise with the sharpening results, and create halo and ringing artifacts around edges even if the input blur kernel is correct.